#include "head.h"
// 使用退出标记位 退出子线程
void *threadMain(void *p)
{
    // 需要有一些共享的资源
    status_t *status = (status_t *)p;
    int net_fd;
    // printf("子线程 \n");
    while(1)
    {
        //判断是否有任务
        // 以下为共享资源，需要加锁解锁
        pthread_mutex_lock(&status->lock);
       //  printf("加锁 \n");
       //  printf("准备清理资源 \n");
        while(status->queue.size <= 0 && status->exit_flag == 0)
        {
            // 阻塞，等待任务
            // 的出现
            pthread_cond_wait(&status->cond, &status->lock);
            printf("唤醒 \n");
            // 被唤醒，有任务
        }
        printf("退出标记位 \n");
        // 退出标记位退出子线程
        if(status->exit_flag != 0)
        {
            // TODO:要退出，free、unlock、close...
            pthread_mutex_unlock(&status->lock);
            pthread_exit(NULL);
        }
        // 取任务，从队头取net_fd;
        net_fd = status->queue.head->net_fd;
        deQueue(&status->queue);
        printf("取任务 \n");
        
        pthread_mutex_unlock(&status->lock);
        
        printf("清理资源完成 \n");
        // 和客户端进行交互
        SendFile(net_fd);
        close(net_fd);
    }

    return NULL;
}
